package com.zbkj.client.service;

import com.zbkj.common.request.AjAdminLoginRequest;
import com.zbkj.common.request.ClientLoginRequest;
import com.zbkj.common.request.ClientSendCodeRequest;
import com.zbkj.common.request.ClientUpdatePasswordRequest;
import com.zbkj.common.response.ClientLoginResponse;
import com.zbkj.common.response.SystemLoginResponse;

/**
 * 客户端登录服务接口
 * +----------------------------------------------------------------------
 * | CRMEB [ CRMEB赋能开发者，助力企业发展 ]
 * +----------------------------------------------------------------------
 * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
 * +----------------------------------------------------------------------
 * | Licensed CRMEB并不是自由软件，未经许可不能去掉CRMEB相关版权
 * +----------------------------------------------------------------------
 * | Author: CRMEB Team <admin@crmeb.com>
 * +----------------------------------------------------------------------
 */
public interface ClientLoginService {

    /**
     * 发送验证码
     *
     * @param request 发送验证码请求
     * @return Boolean
     */
    Boolean sendCode(ClientSendCodeRequest request);

    /**
     * 客户端登录
     *
     * @param request 登录请求
     * @return ClientLoginResponse
     */
    ClientLoginResponse login(ClientLoginRequest request, String ip);

    /**
     * 修改密码
     *
     * @param request 修改密码请求
     * @param userId 当前登录用户ID
     * @return Boolean
     */
    Boolean updatePassword(ClientUpdatePasswordRequest request, Integer userId);

    /**
     * 更新商户点数
     * 1. 插入表eb_client_power_point_history记录扣点历史
     * 2. 更新租户表的点数
     *
     * @param userId 用户ID
     * @param merId 租户ID
     * @param module 模块名称
     * @param moduleId 模块ID
     * @param moduleName 模块名称（如标题等）
     * @param costPoint 花费的点数
     * @return 更新后的剩余点数
     */
    Double updateMerPoint(Integer userId, Integer merId, String module, Integer moduleId, String moduleName, String showName, Double costPoint, Integer duration);


    /**
     * 更新头像
     * @param materialId
     * @param userId
     * @param merId
     * @return
     */
    Boolean updateHeadImg(Integer materialId,  Integer userId, Integer merId);

} 